#include <iostream>
using namespace std;

/*
    指定调用父类特定版本的构造函数
      语法: 子类构造函数:指定父类构造函数

    总结： 子类的构造函数没有用参数列表指定--》父类一定是使用无参构造，如果父类没有无参构造编译报错
          子类的构造函数使用参数列表指定了父类的构造--》调用你指定的

*/

class Animal
{
public:
    Animal()
    {
        cout << "Animal()" << endl;
    }

    Animal(int a)
    {
        cout << "Animal(int a) a = " << a << endl;
    }

    Animal(string name, int age)
    {
        cout << "Animal(string name ,int age) name = " << name << " age = " << age << endl;
    }
};

class Cat : public Animal
{
public:
    Cat() : Animal(1)
    {
        cout << "Cat()" << endl;
    }
    Cat(string name, int age) : Animal(name, age)
    {
        cout << "Cat(string name, int age)" << endl;
    }
};

int main()
{
    Cat cat;
    Cat cat1("Tom", 2);
    return 0;
}